/**
 * @param {number[]} nums
 * @return {number[][]}
 */
 var permute = function(nums) {
    let res = [], path = [], used = []
    const backTracking = function(){
      if(path.length === nums.length){
        res.push([...path])
        return
      }
      for(let i = 0;i < nums.length;i++){
        if(used[i]) continue // 如果当前下标的元素已经被使用了就退出此次循环
        path.push(nums[i])
        used[i] = true
        backTracking() // 下一次继续遍历
        path.pop()
        used[i] = false 
      }
    }
    backTracking()
    return res
};